home *** CD-ROM | disk | FTP | other *** search
-
- TO DO:
-
- - improve debugger:
- - manage breakpoints globally, allow bp deletion, tbreak, cbreak etc.
- - real object browser
- - help on how to use it (a simple help button will do wonders)
- - performance? (updates of large sets of locals are slow)
- - better integration of "debug module"
- - insert the initial current directory into sys.path
- - default directory attribute for each window instead of only for windows
- that have an associated filename
- - "GO" commands (execute whole buffer, selection, current line
- in the context of the Python Shell window)
- Rename Run -> Load, Go -> Execute
- - output from module execution should go to Python Shell (?)
- - command expansion from keywords, module contents, other buffers, etc.
- - "Recent documents" menu item
- - more emacsisms:
- - parentheses matching
- - M-[, M-] to move by paragraphs
- - smart stuff with whitespace around Return
- - filter region?
- - incremental search?
- - ^K should cut to buffer
- - restructure state sensitive code to avoid testing flags all the time
- - persistent user state (e.g. window and cursor positions, bindings)
- - make backups when saving
- - check file mtimes at various points
- - interface with RCS/CVS/Perforce ???
- - status bar?
- - better help?
- - don't open second class browser on same module
-
- Details:
-
- - when there's a selection, left/right arrow should go to either
- end of the selection
- - ^O (on Unix -- open-line) should honor autoindent
- - after paste, show end of pasted text
- - on Windows, should turn short filename to long filename (not only in argv!)
- (shouldn't this be done -- or undone -- by ntpath.normpath?)
-
- Structural problems:
-
- - too much knowledge in FileList about EditorWindow (for example)
- - Several occurrences of scrollable listbox with title and certain
- behavior; should create base class to generalize this
-
- ======================================================================
-
- Jeff Bauer suggests:
-
- - The editor should show the current line number.
- - Open Module doesn't appear to handle hierarchical packages.
- - Class browser should also allow hierarchical packages.
- - Open and Open Module could benefit from a history,
- either command line style, or Microsoft recent-file
- style.
- - Add a Smalltalk-style inspector (i.e. Tkinspect)
-
- The last suggestion is already a reality, but not yet
- integrated into IDLE. I use a module called inspector.py,
- that used to be available from python.org(?) It no longer
- appears to be in the contributed section, and the source
- has no author attribution.
-
- In any case, the code is useful for visually navigating
- an object's attributes, including its container hierarchy.
-
- >>> from inspector import Tkinspect
- >>> Tkinspect(None, myObject)
-
- Tkinspect could probably be extended and refined to
- integrate better into IDLE.
-
- ======================================================================
-
- Comparison to PTUI
- ------------------
-
- + PTUI has a status line
-
- + PTUI's help is better (HTML!)
-
- + PTUI can attach a shell to any module
-
- + PTUI's auto indent is better
- (understands that "if a: # blah, blah" opens a block)
-
- + PTUI has more bells and whistles:
- open multiple
- append
- examine
- go
-
- ? PTUI's fontify is faster but synchronous (and still too slow);
- does a lousy job if editing affects lines below
-
- - PTUI's shell is worse:
- no coloring;
- no editing of multi-line commands;
- ^P seems to permanently remove some text from the buffer
-
- - PTUI's undo is worse:
- no redo;
- one char at a time
-
- - PTUI's GUI is a tad ugly:
- I don't like the multiple buffers in one window model;
- I don't like the big buttons at the top of the widow
-
- - PTUI lacks an integrated debugger
-
- - PTUI lacks path and class browsers
-
- - PTUI lacks many of IDLE's features:
- - expand word
- - regular expression search
- - search files (grep)
- - (un)tabify
- - center
- - zoom height
-
- ======================================================================
-
- Notes after trying to run Grail
- -------------------------------
-
- - Grail does stuff to sys.path based on sys.argv[0]; you must set
- sys.argv[0] to something decent first (it is normally set to the path of
- the idle script).
-
- - Grail must be exec'ed in __main__ because that's imported by some
- other parts of Grail.
-
- - Grail uses a module called History and so does idle :-(
-
- ======================================================================
-